<?php
require_once 'SessionController.php';
if(!verificaLogin()) return;

require_once '../../../../Utils/Conexion.php';
$accion = "LISTAR";
$torneoId = 0;
$filtro = "ALL";
$pagina = 1;
$buscar = "";
$valor = "";
if (isset($_POST["accion"])) $accion = $_POST["accion"];
if (isset($_POST["pagina"])) $pagina = $_POST["pagina"];
if (isset($_POST["buscar"])) $buscar = $_POST["buscar"];
if (isset($_POST["valor"])) $valor = $_POST["valor"];

//CONTROL TORNEO SELECCIONADO
if(isset ($_SESSION['torneoId'])) $torneoId = $_SESSION['torneoId'];
if(isset ($_SESSION['filtro'])) $filtro = $_SESSION['filtro'];
else $_SESSION['filtro'] = $filtro;


//ACCIONES
if ($accion === "GET_TORNEOS") {
    getTorneosHabilitados();
} else if ($accion === "CHANGE_TORNEO") {
    changeTorneo($valor);
} else if ($accion === "GET_FILTROS") {
    getFiltros();
} else if ($accion === "CHANGE_FILTRO") {
    changeFiltro($valor);
} else if ($accion === "LISTAR") {
        listar();
}



function changeTorneo($id) {
    setTorneoId($id);
    listar();
}


function changeFiltro($valor) {
    setFiltro($valor);
    listar();
}


//SETEA EL TORNEO ACTUAL SELECCIONADO
function setTorneoId($id) {
    global $torneoId;
    $_SESSION['torneoId'] = $id;
    $torneoId = $id;
}


//SETEA EL FILTRO ACTUAL SELECCIONADO
function setFiltro($valor) {
    if($valor) {
        $_SESSION['filtro'] = $valor;
        global $filtro;
        $filtro = $valor;
    }
}


function getFiltros(){
    global $filtro;
    $all = ""; $pre = ""; $ins = "";
    if($filtro=='ALL') $all = "selected";
    if($filtro=='PRE') $pre = "selected";
    if($filtro=='INS') $ins = "selected";
    echo "<option value='ALL' $all>TODOS</option>";
    echo "<option value='PRE' $pre>PRE INSCRIPTOS</option>";
    echo "<option value='INS' $ins>INSCRIPTOS</option>";
}


//LISTADO DE TORNEOS HABILITADOS PARA EL COMBO DE TORNEOS
function getTorneosHabilitados() { 
    global $torneoId;
    $q = "SELECT id, nombre FROM poker_torneos 
          WHERE finalizado IS FALSE AND habilitar_inscripciones IS TRUE ORDER BY id ASC"; 
    $torneos = consultar($q);
    if ($torneos) {
        if(sizeof($torneos)>0) {
            //VERIFICA SI ESTA EN EL LISTADO EL TORNEO ACTUAL
            if($torneoId) {
                $existe = FALSE;
                foreach ($torneos as $t) {
                    if($torneoId == $t['id']){
                        $existe = TRUE;
                        break;
                    }
                }
                if(!$existe) setTorneoId(0);
            }
            //DIBUJA EL COMBO
            foreach ($torneos as $t) {
                if(!$torneoId) {
                    setTorneoId($t['id']);
                }
                $seleccionado = ($torneoId == $t['id'])? "selected":"";
                echo "<option value='".$t['id']."' $seleccionado >".$t['nombre']."</option>";
            }
        }
    } else {
        setTorneoId(0);
        echo "<option value='0'>SIN TORNEOS HABILITADOS</option>";
    }
}


//LISTADO
function listar() {
    global $torneoId, $filtro, $pagina, $buscar;
    
    if(!$torneoId) {
        die("<div class='col-md-12 text-center'><h1 style='font-size:70px;'><br><br>Seleccione un Torneo Habilitado!!</h1></div>");
    }    
    $registrosPorPagina = 10;
    $rangoPaginador = 5;
    $cantInicial = ($pagina - 1) * $registrosPorPagina;
    $cantFinal = $cantInicial + $registrosPorPagina;
    $nroInicial = $cantInicial + 1;
    $paginas = 0;
    $total = 0;
    $busqueda = "";
    $filtros = "";

    //ARMO CONSULTAS
    
    //FILTROS
    if($filtro === "PRE") {
        $filtros = " AND ps.estado = 'PRE INSCRIPTO' ";
    } else if($filtro === "INS") {
        $filtros = " AND ps.id != 0 AND ps.estado != 'PRE INSCRIPTO' ";
    } 
    
    //BUSQUEDA
    if (strlen($buscar) > 0) {
        $busqueda = "AND (p.documento LIKE '%$buscar%' OR p.apenom LIKE '%$buscar%' OR c.nombre LIKE '%$buscar%' OR p.telefono LIKE '%$buscar%') ";
    }

    $selectCant = "SELECT COUNT(p.id) AS cant ";
    $selectList = "SELECT IFNULL(ps.id,0) AS id, p.id AS persona_id, p.documento AS documento, ps.estado as estado, 
                        p.apenom AS apenom, p.telefono AS telefono, IFNULL(c.nombre,'SIN DEFINIR') AS ciudad, 
                        IFNULL(ps.mesa_numero,'-') AS mesa, IFNULL(ps.mesa_posicion,'-') AS posicion ";

    $from = "FROM personas AS p 
             LEFT JOIN poker_specifics AS ps ON p.id = ps.persona_id AND ps.poker_torneo_id = $torneoId  
             LEFT JOIN ciudades AS c ON c.id = p.ciudad_id ";
    $where = "WHERE p.inactivo IS FALSE $busqueda $filtros ";
    $order = "ORDER BY mesa DESC, posicion ASC, apenom ASC ";
    $limit = "LIMIT $cantInicial, $registrosPorPagina";

    $queryCantidad = $selectCant . $from . $where;
    $queryList = $selectList . $from . $where . $order . $limit;

    $respuesta = consultar($queryCantidad);
    if ($respuesta) {
        $total = $respuesta[0]['cant'];
        $paginas = ceil($total / $registrosPorPagina);
        if ($cantFinal > $total) {
            $cantFinal = $total;
        }
    }

    $personas = consultar($queryList);
    $ultimoIdPersona = FALSE;
    if ($personas) {
        echo "<table class='table table-striped table-hover '>
                    <thead>
                      <tr height='45px'>
                        <th class='text-center' style='width: 50px' ><span class='glyphicon glyphicon-check'></span></th>
                        <th class='text-center' style='width: 140px' >DOCUMENTO</th>
                        <th>NOMBRE Y APELLIDO</th>
                        <th class='text-center' >CIUDAD</th>
                        <th class='text-center' >TELEFONO</th>
                        <th class='text-center' >MESA</th>
                        <th class='text-center' >POSICION</th>
                        <th class='text-center' style='width: 160px'>ACCION</th>
                      </tr>
                    </thead>
                    <tbody>";
        foreach ($personas as $dato) {
            $ultimoIdPersona = $dato["persona_id"];
            $inscribir = "";
            $imprimir = " disabled = 'disabled' ";
            $flag = "-";
            if ($dato['id']) {
                if ($dato["estado"] === 'PRE INSCRIPTO') {
                    $flag = "<span class='glyphicon glyphicon-flag text-warning'></span>";
                } else if ($dato["estado"] === 'ELIMINADO') {
                    $imprimir = "";
                    $flag = "<span class='glyphicon glyphicon-retweet'></span>";
                } else {                    
                    $flag = "<span class='glyphicon glyphicon-ok text-success'></span>";
                    $imprimir = "";
                    $inscribir = " disabled = 'disabled' ";
                    $ultimoIdPersona = FALSE;
                }
            }
            echo "<tr>
                        <td class='text-center'>$flag</td>
                        <td class='text-center'>" . $dato["documento"] . "</td>
                        <td class=''>" . $dato["apenom"] . "</td>
                        <td class='text-center'>" . $dato["ciudad"] . "</td>
                        <td class='text-center'>" . $dato["telefono"] . "</td>
                        <td class='text-center'>" . $dato["mesa"] . "</td>
                        <td class='text-center'>" . $dato["posicion"] . "</td>
                        <td class='text-center'>
                            <button type='button' class='btn btn-success btn-sm' $inscribir onclick='inscribir(".$dato["persona_id"].");' ><i class='glyphicon glyphicon-check'/> INSCRIBIR</button>
                            <button type='button' class='btn btn-info btn-sm' $imprimir onclick='imprimir(".$dato["persona_id"].");'><i class='glyphicon glyphicon-print'></i></button>
                        </td>
                    </tr>";
        }
        echo "</tbody></table>
                    <nav class='navbar navbar-default navbar-fixed-bottom' role='navigation'>
                        <div class='container-fluid'>
                            <ul class='nav navbar-nav navbar-left'>
                                <p class='navbar-text'>Mostrando del $nroInicial al $cantFinal de $total registros</p>
                            </ul>";
        if ($paginas > 1) {
            $anterior = $pagina - 1;
            $siguiente = $pagina + 1;
            echo "<div class='navbar-right'>
                    <div class='btn-group'>";
            if ($pagina == 1) {
                echo "<button type='button' class='btn btn-default navbar-btn disabled' style='min-width:50px;' onclick='paginar(1)'>«</button>";
            } else {
                echo "<button type='button' class='btn btn-default navbar-btn' style='min-width:50px;' onclick='paginar(1)'>«</button>";
            }
            
            $rango = getRange($pagina, $paginas, $rangoPaginador);
            foreach ($rango as $r) {
                if ($r == $pagina) {
                    echo "<button type='button' class='btn btn-default navbar-btn active' style='min-width:50px;' onclick='paginar($r)'>$r</button>";
                } else {
                    echo "<button type='button' class='btn btn-default navbar-btn' style='min-width:50px;' onclick='paginar($r)'>$r</button>";
                }
            }

            if ($pagina < $paginas) {
                echo "<button type='button' class='btn btn-default navbar-btn' style='min-width:50px;' onclick='paginar($paginas)'>»</button>";
            } else {
                echo "<button type='button' class='btn btn-default navbar-btn disabled' style='min-width:50px;' onclick='paginar($paginas)'>»</button>";
            }
            echo"</div></div>";
        } 
        echo "</div></nav>";
        if($total == 1 && $ultimoIdPersona) {
            echo "<script type='text/javascript'> inscribir($ultimoIdPersona); </script>";
        }
    } else {
        die("<div class='col-md-12 text-center'><h1 style='font-size:70px;'><br><br>No se Encontraron Registros!</h1></div>");
    }
}

function getRange($actual, $total, $cantidad) {
    $medio = floor($cantidad/2);
    $ini = max($actual-$medio, 1);
    $fin = min($ini+$cantidad-1, $total);
    if(($fin - $ini)<($cantidad - 1)) {
        $ini = max($total-$cantidad+1,1);
    } 
    return range($ini, $fin);
}
